/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.servico;

import br.com.deployment.entidade.acesso.Usuario;
import br.com.deployment.entidade.fermojupi.AtoItem;
import br.com.deployment.entidade.selo.DetalheEntradaSelo;
import br.com.deployment.entidade.selo.Distribuicao;
import br.com.deployment.entidade.selo.Selo;
import br.com.deployment.entidade.selo.TipoSelo;
import java.util.Date;
import java.util.List;
import javax.ejb.Remote;

/**
 *
 * @author elyjr
 */
@Remote
public interface SeloServico {
    
    public void create(Selo selo);

    void edit(Selo selo);
    
    void editSelos(List<Selo> selos);

    void remove(Selo selo);

    void cancelar(List<Selo> s);
    
    Selo find(int id);
    
    Selo findNumeracao(int numeracao, int serie);

    List<Selo> findAll();
    
    boolean exist(Selo se, boolean msg);
    
    Selo findSelo(int numeracao, String serie, TipoSelo tipoSelo);
    
    Long qtdSelo(Usuario u, TipoSelo tSelo);
    
    Long qtdSeloAll(TipoSelo tSelo);
    
    Long qtdSeloDistribuido(TipoSelo tSelo);
    
    Long qtdSeloSairam(TipoSelo tSelo);
    
    Long qtdSeloCancelado(TipoSelo tSelo);
    
    Long qtdSeloSairamMes(Date dataIni, Date dataFim);
    
    public boolean existSeloEditar(int numeracao, String serie, TipoSelo tipoSelo,int detalhe);

    void removeSelos(DetalheEntradaSelo es);
    
    public Selo findSeloUsr(Selo selo);
    
    public void seloNaoUsado(Selo s, TipoSelo ts, Date dataIni,
            Date dataFim, Distribuicao d, Integer numIni, Integer numFim);
    
    public List<Selo> selosByUsuarioByAto(AtoItem atoItem, Usuario usr, List<Selo> notSelos);
    
}
